package com.yyge.netty;

import org.springframework.boot.test.context.SpringBootTest;

import java.io.*;
import java.net.InetSocketAddress;
import java.net.Socket;

/**
 * 模拟socket发送消息
 */
@SpringBootTest
public class NettyTest02 {

    public static void main(String[] args) {
        Socket socket = null;

        try {
            // 创建Socket对象并连接到服务器
            socket = new Socket("127.0.0.1", 1234);

            // 用于发送和接收数据的流
            OutputStream outputStream = socket.getOutputStream();
            InputStream inputStream = socket.getInputStream();

            // 发送和接收消息的循环
            BufferedReader userInput = new BufferedReader(new InputStreamReader(System.in));
            boolean keepRunning = true;
            while (keepRunning) {
                // 从用户获取要发送的消息（或根据其他条件生成消息）
                System.out.print("请输入要发送的消息（输入'exit'退出）：");
                String message = userInput.readLine();
                if(!"exit".equals(message)){
                    message = "game/bets-list/123456/456213";
                }
                if ("exit".equals(message)) {
                    keepRunning = false;
                } else {
                    // 发送消息
                    outputStream.write(message.getBytes());
                    outputStream.flush(); // 确保消息被发送

                    // 接收服务器响应
                    byte[] buffer = new byte[1024*50];
                    int length = inputStream.read(buffer);
                    if (length > 0) {
                        String response = new String(buffer, 0, length);
                        // 处理服务器返回的数据
                        System.out.println("服务器返回的数据：" + response);
                    }  //帮我优化如下代码  目前问题是返回文本过长一次性读不完

                }
            }

        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            // 在循环外部关闭连接
            if (socket != null && !socket.isClosed()) {
                try {
                    socket.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}